#include"comm.hpp"
using namespace std;
//extern Log log;

//服务端读

int main()
{
    //1、创建共享内存
    int shmid = CreateShm(); //调用创建的接口
    //2、链接
    char *shmaddr = (char*)shmat(shmid, nullptr, 0); //强制转化为char*类型

    Init init; //打开管道文件 — 为了同步机制
    int fd = open(PATHFILE, O_RDONLY); //只有读就会在这里堵塞，等待写入端
    if(fd < 0)
    {
        log(Fatal, "error message:%s\n", strerror(errno));
        exit(FILE_OPEN_ERROR);
    }

    //使用:
    struct shmid_ds shmds; //创建一个结构体，用于获取信息
    while(true)
    {
        //1、利用管道，进行互斥
        char ch;
        ssize_t len = read(fd, &ch, 1);
        if(len <= 0) break;

        //2、进行通信
        cout << "cilent say@ " << shmaddr; //直接访问即可！
        sleep(1);

        //获取信息：
        shmctl(shmid, IPC_STAT, &shmds);
        //…… 查看各种信息：
        // cout << "shm size: " << shmds.shm_segsz << endl;
        // cout << "shm nattch: " << shmds.shm_nattch << endl;
        // printf("shm key: 0x%x\n",  shmds.shm_perm.__key);
        // cout << "shm mode: " << shmds.shm_perm.mode << endl;
    }
    log(Info, "serves quit");
    //3、去链接
    shmdt(shmaddr);
    //4、销毁
    shmctl(shmid, IPC_RMID, nullptr);

    close(fd);
    return 0;
}
